﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Rimz.DataAccessLayer
{
    /// <summary>
    /// Data Access Layer
    /// </summary>
    public interface IDataContext: IDisposable
    {
        /// <summary>
        /// Return families by family id
        /// </summary>
        /// <param name="familyID">family id to be search</param>
        /// <returns></returns>
        Family GetFamilyByID(int familyID);
        
        /// <summary>
        /// Return users by user id
        /// </summary>
        /// <param name="userID">user id to be search</param>
        /// <returns></returns>
        User GetUserByID(int userID);

        /// <summary>
        /// Create a New User.  Return the new user ID after the new user is created.
        /// </summary>
        /// <param name="lastName">Last name of the new user</param>
        /// <param name="firstName">first name of the new user</param>
        /// <param name="email">email of the new user</param>
        /// <param name="password">password of the account</param>
        /// <returns>The new user ID after the new user is created.</returns>
        int CreateNewUser(string lastName, string firstName, string email, string password);

        /// <summary>
        /// Create a new family. 
        /// </summary>
        /// <param name="familyName">Family name of the new family</param>
        /// <returns>The new family ID</returns>
        int CreateNewFamily(string familyName, string familyDescription);

        /// <summary>
        /// Add a list of users to the existing family.
        /// </summary>
        /// <param name="userList">List of users to be added</param>
        /// <param name="familyID">ID of the family to be added to</param>
        // void AddUsersToFamily(List<User> userList, int familyID);
        
    }
}
